import java.util.*;

public class QueueToStack {
    private Queue<Integer> q1;
    private Queue<Integer> q2;

    public QueueToStack() {
        q1 = new LinkedList<>();
        q2 = new LinkedList<>();
    }

    public void push(int x) {
        if(q1.isEmpty() && q2.isEmpty()){
            q1.offer(x);
        }else{
            if(!q1.isEmpty()){
                q1.offer(x);
            }else{
                q2.offer(x);
            }
        }
    }

    public int pop() {
        if(empty()) return -1;
        if(!q1.isEmpty()){
            int size = q1.size();
            while(--size > 0){
                int t = q1.poll();
                q2.offer(t);
            }
            return q1.poll();
        }else{
            int size = q2.size();
            while(--size > 0){
                int t = q2.poll();
                q1.offer(t);
            }
            return q2.poll();
        }
    }

    public int top() {
        if(empty()) return -1;
        int ret = 0;
        if(!q1.isEmpty()){
            int size = q1.size();
            while(--size > 0){
                int t = q1.poll();
                q2.offer(t);
            }
            ret = q1.poll();
            q2.offer(ret);
            return ret;
        }else{
            int size = q2.size();
            while(--size > 0){
                int t = q2.poll();
                q1.offer(t);
            }
            ret = q2.poll();
            q1.offer(ret);
            return ret;
        }
    }

    public boolean empty() {
        if(q1.isEmpty() && q2.isEmpty()){
            return true;
        }
        return false;
    }
}
